Enterprise Pricing Events Lifecycle Guide
TEP supports both events and API communication. This brief guide describes a representative, sample lifecycle for Temenos Enterprise Pricing (TEP) events. While not all the events are explored in this guide, the guide is intended to provide you with information on both outgoing events, and some of the incoming events to TEP.
Note: Design time APIs, such as the creation of features and so on, for example, are not covered by this guide.
TEP Workflow
Any core banking system can communicate with TEP using events, through an adapter that converts the underlying core system data into a format that's consumable by TEP. The same event can be consumed by multiple systems that have subscribed to the event.
The adapter converts the core system data into a format that's supported by TEP, and emits the business events (for example, transaction, account opening, and so on) to the event store. The listener receives the events and sends them to TEP, which then evaluates the events and calculates pricing, when required.
After the evaluation, TEP emits the calculated pricing and all the related information through an outgoing event to the event store. The adapter then converts the outgoing event from TEP to a supported format and pushes the data to the core system for processing, raising accounting entries or other book-keeping activities.
Outgoing Events
The outgoing events are TEP response events. TEP performs the pricing evaluation, either automatically (for example, package pricing) or based on the incoming events and pass a detailed outward response. The following event types are supported by TEP.
Event Type |
Description |
Activity Pricing |
Communicates all transaction-based pricing. |
Periodic Pricing |
Responds to all scheduled charge requests. |
Rate |
Responds to rate requests. |
Lifecycle Diagram
Legend
The API URL that's used to carry out this business process. |
|
API request (typically, a command to perform an operation). |
|
The event type that's emanated. | |
Business event emanating after the process is completed by the system. | |
Business process in the system. | |
Completion of the business process in the system. |
Tip: Click diagram to expand.
Activity Pricing
An activity pricing event is an outgoing event from TEP that communicates the details of an activity charges evaluation. The user can define the event name in an activity and charges based on the activity. This indicates that a fee could be charged for any event name. The outgoing event contains information on the original and final charge, after application of pricing benefits.
API
The API that is used to evaluate activity charges.
POST /enterprise/pricing/arrangements/{basereference}/activityCharges
Event
The event that's emanated at activity charges evaluation.
enterprise.calculateActivityPricing.activityPricingCalculated
Event Payload
contractReference |
Indicates the account Id in which the event is raised. |
eventName |
Indicates the name of the event that was used for processing by the TEP system. |
baseEventIdentifier |
Indicates the name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up. |
effectiveDate |
Indicates the event date. |
bookingDate |
Indicates the date on which this business activity is performed in the underlying system. |
channel |
Indicates the channel in which the activity was performed. |
branch |
Indicates the branch name or code in which the business activity was performed. |
lineOfBusiness |
Indicates the line of business in which the activity was performed. |
systemReference |
Identifies the system to which the event is outgoing. |
companyReference |
Identifies the underlying entity, company, or branch. |
transactionReference |
Indicates the identifier of the original transaction reference. This is the transaction reference provided by the core banking system, through the incoming message, which is also included in the outgoing (from the TEP) response, so that the core can reconcile. |
chargeCurrency |
Indicates the identifier for the currency in which charge is calculated. |
processingReference |
Indicates the TEP reference used to process this pricing calculation. This detail is for information purpose to relate back to the computation or query from core systems or front office. |
feeName |
Name of the fee that's applied to the transaction reference. |
feeDescription |
Describes the fee that's applied to the transaction reference. |
originalFee |
Indicates the standard fee amount applied before pricing evaluation. |
feeAdjusted |
Total signed adjustment amount. |
finalFee |
Final fee after pricing evaluation. |
feeType |
Indicates if the fee is a debit or credit type of charge. A debit charge indicates the fee that is due from the customer. A credit indicates the fee is to be given to the customer, that is cash back. |
feeApplicationType |
Indicates whether the fee is to be made due, paid, or capitalised. |
benefitType |
Indicates the identifier for the name of the benefit(s) passed on to the customer or party. |
benefitProgram |
Indicates the pricing program under which benefit is offered. |
benefitAmount |
Indicates the quantum of benefit for a given benefit type. |
activityName |
Indicates the activity which was used by TEP to arrive at the fee calculation. |
- Sample Code: Activity Pricing Event
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "chargeCurrency": "DDDDDD", "processingReference": "CCCC", "activityName": "ee", "baseContractDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "transactionReference": "ddddd", "reversalIndicator": false, "variation": "", "party": [ { "party": "DDDDDDD", "partyRole": "", } ], "eligibility": [ { "variation": "cccccccc", "actionContext": "A", "failureType": "A", } ], "eligibilityRule": [ { "ruleName": "cccccccc", "customerRole": "AAAA", "roleRuleName": "BBBBB", "failureAction": "CCCCC", } ] } , "feeProcessDetails": {[ { "feeName": "eeeeeeeee", "feeDescription": "CCCCC", "originalFee": "cccccccc", "feeAdjusted": "AAAA", "finalFee": "BBBBB", "feeType": "CCCCC", "feeApplicationType": "CCCCC", "benefitDetails": [ { "benefitProgram": "cccccccc", "benefitType": "AAAA", "benefitAmount": "BBBBB", } ], "individualFeeDetails": [ { "baseFeeName": "cccccccc", "baseFeeDescription": "AAAA", "baseFeeAmount": "BBBBB", "baseFeeAdjustment": "cccccccc", "baseFeeNetAmount": "AAAA", } ] } ], } } }
Periodic Pricing
API
The API that's used to evaluate periodic charges.
POST/ enterprise/pricing/arrangements/{basereference}/periodicCharges
Event
The event that's emanated at periodic charges evaluation.
enterprise.calculatePeriodicPricing.periodicPricingCalculated
Event Payload
contractReference |
Unique identifier for the contract or account in which the event is raised. |
eventName |
Name of the event that was used for processing by the TEP system. |
baseEventIdentifier |
Name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up. |
effectiveDate |
Effective date for the event. |
bookingDate |
Date on which this business activity is performed in the underlying system. |
channel |
Channel in which the activity was performed. If pricing is not determined based on channel, then this information is not significant. |
branch |
Indicates the branch name or code in which the business activity was performed. If pricing is not determined based on the branch, this information is not significant. |
lineOfBusiness |
Line of business in which the activity was performed. If pricing is not determined based on LOB, this information is not significant. |
systemReference |
Indicates the identifier of the system to which the event is outgoing. |
companyReference |
Indicates the identifier of the underlying entity, company, or branch. |
transactionReference |
Identifies the transaction. |
periodStartDate |
Date which the system used as the start date for computing the period. |
chargeCurrency |
Indicates the identifier for the currency in which charge is calculated. |
feeName |
Name of the underlying fee(s). |
feeDescription |
Describes the underlying fee(s). |
originalFee |
Standard fee amount applied before pricing evaluation. |
feeAdjusted |
Total signed adjustment amount. |
finalFee |
Final debit or credit fee. Minus ( - ) sign represents a debit charge or fees recoverable from the party. No sign represents a credit charge, cost or bonus payable to the party. |
feeType |
Indicates whether it's a debit or credit type charge. |
feeApplicationType |
Indicates whether the fee is to be made due, paid, or capitalised. |
benefitType |
Indicates the identifier for the name of the benefit(s) passed on to the customer or party. For example, southern region, account package, mobile channel, and so on. |
benefitProgram |
Pricing program under which the benefit is offered. |
benefitAmount |
Indicates the quantum of benefit for a given benefit type. |
baseFeeName |
Identifies the itemised charge. |
baseFeeDescription |
Describes the itemised charge. |
baseFeeAmount |
Computed original base fee amount. |
baseFeeAdjustment |
Total signed adjustment amount. |
baseFeeNetAmount |
Indicates the final base fee amount after including the adjustment. |
- Sample Code: Periodic Pricing Event
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "periodStartDate": "CCCC", "chargeCurrency": "DDDDDD", "baseContractDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "transactionReference": "ddddd", "reversalIndicator": false, "variation": "", "party": [ { "party": "DDDDDDD", "partyRole": "", } ], "eligibility": [ { "variation": "cccccccc", "actionContext": "A", "failureType": "A", } ], "eligibilityRule": [ { "ruleName": "cccccccc", "customerRole": "AAAA", "roleRuleName": "BBBBB", "failureAction": "CCCCC", } ] } , "feeProcessDetails": {[ { "feeName": "eeeeeeeee", "feeDescription": "CCCCC", "originalFee": "cccccccc", "feeAdjusted": "AAAA", "finalFee": "BBBBB", "feeType": "CCCCC", "feeApplicationType": "CCCCC", "benefitDetails": [ { "benefitProgram": "cccccccc", "benefitType": "AAAA", "benefitAmount": "BBBBB", } ], "individualFeeDetails": [ { "baseFeeName": "cccccccc", "baseFeeDescription": "AAAA", "baseFeeAmount": "BBBBB", "baseFeeAdjustment": "cccccccc", "baseFeeNetAmount": "AAAA", } ] } ], } } }
Interest Rate Calculation
API
The API that's used for calculating the interest rate.
POST/ enterprise/pricing/arrangements/{basereference}/rates
Event
The event that's emanated when the interest rate is calculated.
enterprise.calculateInterestRate.interestRateCalculated
Event Payload
contractReference |
Unique identifier for the contract or account in which the event is raised. |
eventName |
Name of the event that was used for processing by the TEP system. |
baseEventIdentifier |
Name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up. |
effectiveDate |
Effective date for the event. |
bookingDate |
Date on which this business activity is performed in the underlying system. |
channel |
Channel in which the activity was performed. If pricing is not determined based on channel, then this information is not significant. |
branch |
Indicates the branch name or code in which the business activity was performed. If pricing is not determined based on the branch, this information is not significant. |
lineOfBusiness |
Line of business in which the activity was performed. If pricing is not determined based on LOB, this information is not significant. |
systemReference |
Indicates the identifier of the system to which the event is outgoing. |
companyReference |
Indicates the identifier of the underlying entity, company, or branch. |
transactionReference |
Identifies the transaction. |
rateName |
Identifies the underlying interest rate component(s). For example, credit interest, debit interest, penalty interest, and so on. |
rateDescription |
Describes the interest rate component. |
originalRate |
The original rate or base rate. |
rateAdjustment |
The adjusted rate. |
finalRate |
The rate after evaluation. |
feeAdjusted |
Total signed adjustment amount. |
rateType |
Indicates if the rate is debit or credit type interest. |
rateDefinition |
The rate calculation method. For example, fixed, floating, periodic. |
benefitName |
The name of the benefit(s) passed on to the customer or party. For example, southern region, account package, mobile channel, and so on. |
benefitProgram |
Pricing program under which the benefit is offered. |
benefitType |
Indicates the quantum of benefit for a given benefit type. |
benefitPercentage |
Rate benefit in percentage terms. |
- Sample Code: Interest Rate Calculation
-
{ "specversion": "BBBBBBB", "type": "AAAAAAAAA", "subject": "DDDDDDDD", "source": "eeeee", "id": "bbbbbbb", "time": "BBBBB", "correlationid": "cccccc", "serviceid": "ee", "channelid": "cc", "organizationid": "bbbbbbbb", "tenantid": "cccccc", "businesskey": "DDDDDDDDD", "sequenceno": 1, "authorization": "ccccccccc", "customfilterid": "eee", "operationinstanceid": "ccc", "sequenceinstanceid": "e", "priority": 1, "data": { "baseContractDetails": [ { "contractReference": "DDDDDD", "systemReference": "CCCC", "companyReference": "BBBBB", "eventName": "", "baseEventIdentifier": "b", "effectiveDate": "ddddddddd", "bookingDate": "EEEE", "contractCurrency": "AAAAAA", "channel": "BBBBBBBB", "branch": "eeeeee", "lineOfBusiness": "CCCCCCCC", "transactionReference": "ddddd", "reversalIndicator": false, "variation": "", "party": [ { "party": "DDDDDDD", "partyRole": "", } ], "eligibility": [ { "variation": "cccccccc", "actionContext": "A", "failureType": "A", } ], "eligibilityRule": [ { "ruleName": "cccccccc", "customerRole": "AAAA", "roleRuleName": "BBBBB", "failureAction": "CCCCC", } ] } , "feeProcessDetails": {[ { "feeName": "eeeeeeeee", "feeDescription": "CCCCC", "originalFee": "cccccccc", "feeAdjusted": "AAAA", "finalFee": "BBBBB", "feeType": "CCCCC", "feeApplicationType": "CCCCC", "benefitDetails": [ { "benefitProgram": "cccccccc", "benefitType": "AAAA", "benefitAmount": "BBBBB", } ], "individualFeeDetails": [ { "baseFeeName": "cccccccc", "baseFeeDescription": "AAAA", "baseFeeAmount": "BBBBB", "baseFeeAdjustment": "cccccccc", "baseFeeNetAmount": "AAAA", } ] } ], } } }
Incoming Events
The following are the incoming API and the event types supported by TEP.
Incoming APIs
Event Type | Description | Processing API |
New | New contracts created in core systems. | POST /enterprise/pricing/arrangements |
Transaction | All transactions dealing with amounts. For example, loan disbursements, ATM withdrawals and so on. | POST /enterprise/pricing/arrangements /{basereference}/transactions |
Generic | All business transactions where specific payload is not required. For example, debit card re-issue and so on. | POST/ enterprise/pricing/arrangements /{basereference}/activities |
Change Product/Renewal | Change in base contract's product or renewal of the same product. | POST/ enterprise/pricing/arrangements/ {basereference}/productChanges |
Change Party | Change of parties in the base contracts. | POST/ enterprise/pricing/arrangements /{basereference}/partyAmendments |
Scheduled Charge | Request to TEP to calculate the periodic charges due to end of period. | POST/ enterprise/pricing/arrangements/ {basereference}/periodicCharges |
Request Rate | Request to calculate the interest rate of the contract. | POST/ enterprise/pricing/arrangements/ {basereference}/rates |
Change Line of Business | Modification of the base contract's Line of Business. | POST/ enterprise/pricing/arrangements/ {basereference}/lineofBusinessChanges |
Change Channel | Modification of the base contract's channel. | POST/ enterprise/pricing/arrangements/ {basereference}/channelChanges |
Change Branch | Modification of the base contract's branch. | POST/ enterprise/pricing/arrangements/ {basereference}/branchChanges |
Change Commitment | Modification of the base contract's commitment amount. | POST/ enterprise/pricing/arrangements/{basereference}/commitmentChanges |
Modification | Modification of the base contract's static details. | POST/ enterprise/pricing/arrangements/{basereference}/alternatereferenceChanges |
Incoming Event Payload
Event Payload
contractReference |
Unique identifier for the contract or account in which the event is raised. |
systemReference |
Indicates the identifier of the system to which the event is outgoing. |
companyReference |
Indicates the identifier of the underlying entity, company, or branch. |
eventName |
Name of the event that was used for processing by the TEP system. |
baseEventIdentifier |
Name of the event happening in the core system. TEP uses this detail for information purpose and returns the same in the outbox events for adapters to match up. |
effectiveDate |
Effective date for the event. |
bookingDate |
Date on which this business activity is performed in the underlying system. |
channel |
Channel in which the activity was performed. If pricing is not determined based on channel, then this information is not significant. |
branch |
Indicates the branch name or code in which the business activity was performed. If pricing is not determined based on the branch, this information is not significant. |
lineOfBusiness |
Line of business in which the activity was performed. If pricing is not determined based on LOB, this information is not significant. |
transactionReference |
Identifies the transaction. |
reversalIndicator |
Indicates whether the underlying transaction is reversed and the same can be reversed from the TEP system as well. |
feeName |
Name of the fee(s) associated with the event. |
feeAmount |
The original or base fee amount. |
feeCurrency |
Indicates the fee currency. |
adjustFeeAmount |
Adjustment detail, if the base fee is adjusted in the core. |
adjustFeeReason |
The reason for adjusting the base fee. |
balanceName |
Indicates the balances this transaction event affected one on the account. |
balanceAmount |
Indicates the balance movement amount, which is a signed floating number. |
productName |
Identifies the associated product. |
party |
Identifies the party or customer. |
partyRole |
Role played by the party or customer in the account. |
alternateType |
Alternate identifier type used for the account. |
alternateReference |
Identifies the account, using the alternate identifier system. |
- Sample Code: New Account Creation Incoming Event Payload
-
{ "baseDetails": { "contractReference": "AAAAAAA", "systemReference": "BBBBBB", "companyReference": "USSSSSSSS", "eventName": "SSSSSSSS", "baseEventIdentifier": "HHHH", "effectiveDate": "20200130", "bookingDate": "20200130", "contractCurrency": "CCC", "channel": "BCCCC", "branch": "OOOOO", "lineOfBusiness": "RRRRRR", "transactionReference": "AAAAAAAAAAAAA", "reversalIndicator": false, "feeDetails": [ { "feeName": "AAAAAAA", "feeAmount": CCC, "feeCurrency": "BBB", "adjustFeeAmount": DDD, "adjustFeeReason": "JJKKLLL" } ], "balances": [ { "balanceName": "HJKJLKLKLKL", "balanceAmount": NMNMNMNM } ] }, "productName": "MMMMMM", "party": [ { "partyReference": "1111111", "partyRole": "PPPPPP" } ], "alternateReferences": [ { "alternateReferenceType": "IIII", "alternateReferenceId": "NNNNNNNNNNN" } ] }